#include <iostream>
#include <string>
#include <vector>
#include <deque>
#include <algorithm>

using namespace std;

class Person 
{
public:
	Person(const string &name,int score) 
    : _name(name)
    , _score(score)
    {
	}

	string _name;
	int _score;
};

void creatPerson(vector<Person>& vec) 
{
	string nameSeed = "ABCDE";

	for (int idx = 0; idx < 5; ++idx)
    {
		string name = "选手";
		name += nameSeed[idx];

		int score = 0;
		Person p(name, score);
		vec.push_back(p);
	}
}

void setScore(vector<Person>& vec)
{
	for (vector<Person>::iterator it = vec.begin(); it != vec.end(); ++it)
	{
		deque<int> dq;
		for (int idx = 0; idx < 10; ++idx) 
        {
            //将分数设定在[60, 100]范围中
			int score = ::rand() % 41 + 60;//产生随机的分数
			dq.push_back(score);
		}

        //对分数进行排序
		sort(dq.begin(), dq.end());
		dq.pop_front();//去掉最低分
		dq.pop_back();//去掉最高分

		int sum = 0;
		for (deque<int>::iterator dit = dq.begin(); dit != dq.end(); ++dit)
        {
			sum += *dit;
		}
        //求10个评委的平均分
		int avg = sum/dq.size();
		
        //然后将10个评委的平均分赋值给每个选手
		it->_score = avg;	
    }
}

void showScore(vector<Person>& vec) 
{
	for (vector<Person>::iterator it = vec.begin(); it != vec.end(); ++it) 
    {
		cout << "姓名:" << it->_name << "  平均分数:" << it->_score << endl;
	}
}

int main() 
{
    //种随机种子
	::srand(::clock());

    //定义Person类型的容器
	vector<Person> vec;

    //创建五名选手，创建容器类里面的成员及其属性
	creatPerson(vec);
    //给每个选手设定分数（让10个评委打分）
	setScore(vec);
    //显示每个选手的分数
	showScore(vec);	

	return 0;
}
